package Constants;

use strict;
use warnings;

use Exporter qw( import );

# our $VERSION   = sprintf q{%d}, q$Revision$ =~ m{\d+}xms;
our @EXPORT_OK = qw(
    DIR_SVN
    DIR_UC_SVN
    DIR_GIT
    DIR_UC_GIT
    DIR_HG
    DIR_UC_HG
    DIR_ADDONS
    DIR_ADDONS_OFF
    DIR_INTERFACE
    DIR_ACE2
    DIR_STAGE
    DIR_STAGE_OFF
    DIR_OSX_ICON
    DIR_WTF
    DIR_ACCOUNT
    DIR_EXTERNALS
    DIR_DOWNLOADS
    DIR_MERGE

    FILE_DIRSTATE
    FILE_PKGMETA
    FILE_SVN_ENTRIES
    FILE_DATABASE

    SUFFIX_TOC

    TOC_AUTHOR
    TOC_INTERFACE
    TOC_MAX_INTERFACE
    TOC_NOTES
    TOC_REQUIRED_DEPENDENCIES
    TOC_OPTIONAL_DEPENDENCIES
    TOC_LOAD_WITH
    TOC_EMBEDS
    TOC_TITLE
    TOC_CATEGORY
    TOC_SAVED_VARIABLES
    TOC_SAVED_VARIABLES_PER_CHARACTER
    TOC_PACKAGE_MANAGER
    TOC_ADDONPKG_PARENT
    TOC_ADDONPKG_REVISION
    TOC_ADDONPKG_URL

    VINFO_REPO_TYPE
    VINFO_REPO_NAME
    VINFO_REPO_PATH
    VINFO_REPO_ROOT
    VINFO_FILE_REVISION
    VINFO_DIR_REVISION
    VINFO_PROJECT_REVISION
    VINFO_FILE_HASH
    VINFO_PROJECT_HASH
    VINFO_FILE_AUTHOR
    VINFO_PROJECT_AUTHOR
    VINFO_FILE_TIMESTAMP
    VINFO_PROJECT_TIMESTAMP
    VINFO_URL

    SVN_NORMALIZED_URL
    SVN_REPOSITORY_ROOT

    STATE_ENABLED
    STATE_DISABLED
    STATE_MIXABLED
    STATE_DEFAULT

    SOURCE_SVN
    SOURCE_GIT
    SOURCE_HG
    SOURCE_UNKNOWN
    SOURCE_DOWNLOAD
);
our %EXPORT_TAGS = (
    q{dir} => [
        qw( DIR_SVN
            DIR_UC_SVN
            DIR_GIT
            DIR_UC_GIT
            DIR_HG
            DIR_UC_HG
            DIR_ADDONS
            DIR_ADDONS_OFF
            DIR_INTERFACE
            DIR_ACE2
            DIR_STAGE
            DIR_STAGE_OFF
            DIR_OSX_ICON
            DIR_WTF
            DIR_ACCOUNT
            DIR_EXTERNALS
            DIR_DOWNLOADS
            DIR_MERGE
            )
    ],
    q{file} => [
        qw( FILE_DIRSTATE
            FILE_PKGMETA
            FILE_SVN_ENTRIES
            FILE_DATABASE
            )
    ],
    q{suffix} => [
        qw( SUFFIX_TOC
            )
    ],
    q{toc} => [
        qw( TOC_AUTHOR
            TOC_INTERFACE
            TOC_MAX_INTERFACE
            TOC_NOTES
            TOC_REQUIRED_DEPENDENCIES
            TOC_OPTIONAL_DEPENDENCIES
            TOC_LOAD_WITH
            TOC_EMBEDS
            TOC_TITLE
            TOC_CATEGORY
            TOC_SAVED_VARIABLES
            TOC_SAVED_VARIABLES_PER_CHARACTER
            TOC_PACKAGE_MANAGER
            TOC_ADDONPKG_PARENT
            TOC_ADDONPKG_REVISION
            TOC_ADDONPKG_URL
            )
    ],
    q{vinfo} => [
        qw( VINFO_REPO_TYPE
            VINFO_REPO_NAME
            VINFO_REPO_PATH
            VINFO_REPO_ROOT
            VINFO_FILE_REVISION
            VINFO_DIR_REVISION
            VINFO_PROJECT_REVISION
            VINFO_FILE_HASH
            VINFO_PROJECT_HASH
            VINFO_FILE_AUTHOR
            VINFO_PROJECT_AUTHOR
            VINFO_FILE_TIMESTAMP
            VINFO_PROJECT_TIMESTAMP
            VINFO_URL
            )
    ],
    q{svn} => [
        qw( SVN_NORMALIZED_URL
            SVN_REPOSITORY_ROOT
            )
    ],
    q{state} => [
        qw( STATE_ENABLED
            STATE_DISABLED
            STATE_MIXABLED
            STATE_DEFAULT
            )
    ],
    q{source} => [
        qw( SOURCE_SVN
            SOURCE_GIT
            SOURCE_HG
            SOURCE_UNKNOWN
            SOURCE_DOWNLOAD
            )
    ],
);

# Directory constants
use constant DIR_SVN        => q{.svn};
use constant DIR_UC_SVN     => q{.SVN};
use constant DIR_GIT        => q{.git};
use constant DIR_UC_GIT     => q{.GIT};
use constant DIR_HG         => q{.hg};
use constant DIR_UC_HG      => q{.HG};
use constant DIR_ADDONS     => q{AddOns};
use constant DIR_ADDONS_OFF => q{AddOns (Disabled)};
use constant DIR_INTERFACE  => q{Interface};
use constant DIR_ACE2       => q{Ace2};                   # Old stage directory
use constant DIR_STAGE      => q{StageArea};
use constant DIR_STAGE_OFF  => q{StageArea (Disabled)};
use constant DIR_OSX_ICON   => qq{Icon\r};
use constant DIR_WTF        => q{wtf};
use constant DIR_ACCOUNT    => q{Account};
use constant DIR_EXTERNALS  => q{Externals};
use constant DIR_DOWNLOADS  => q{Downloads};
use constant DIR_MERGE      => q{Merge};

use constant FILE_DIRSTATE    => q{dirstate};
use constant FILE_PKGMETA     => q{.pkgmeta};
use constant FILE_SVN_ENTRIES => q{entries};
use constant FILE_DATABASE    => q{.addonpkg};

use constant SUFFIX_TOC => q{.toc};

use constant TOC_AUTHOR                        => q{Author};
use constant TOC_INTERFACE                     => q{Interface};
use constant TOC_MAX_INTERFACE                 => q{X-Compatible-With};
use constant TOC_NOTES                         => q{Notes};
use constant TOC_REQUIRED_DEPENDENCIES         => q{RequiredDeps};
use constant TOC_OPTIONAL_DEPENDENCIES         => q{OptionalDeps};
use constant TOC_LOAD_WITH                     => q{LoadWith};
use constant TOC_EMBEDS                        => q{X-Embeds};
use constant TOC_TITLE                         => q{Title};
use constant TOC_CATEGORY                      => q{X-Category};
use constant TOC_SAVED_VARIABLES               => q{SavedVariables};
use constant TOC_SAVED_VARIABLES_PER_CHARACTER => q{SavedVariablesPerCharacter};
use constant TOC_PACKAGE_MANAGER               => q{X-Package-Manager};
use constant TOC_ADDONPKG_PARENT               => q{X-addonpkg-parent};
use constant TOC_ADDONPKG_REVISION             => q{X-addonpkg-revision};
use constant TOC_ADDONPKG_URL                  => q{X-addonpkg-url};

use constant VINFO_REPO_TYPE         => q{_repo-type};
use constant VINFO_REPO_NAME         => q{_repo-name};
use constant VINFO_REPO_PATH         => q{_repo-path};
use constant VINFO_REPO_ROOT         => q{_repo-root};
use constant VINFO_FILE_REVISION     => q{file-revision};
use constant VINFO_DIR_REVISION      => q{_dir-revision};
use constant VINFO_PROJECT_REVISION  => q{project-revision};
use constant VINFO_FILE_HASH         => q{file-hash};
use constant VINFO_PROJECT_HASH      => q{project-hash};
use constant VINFO_FILE_AUTHOR       => q{file-author};
use constant VINFO_PROJECT_AUTHOR    => q{project-author};
use constant VINFO_FILE_TIMESTAMP    => q{file-timestamp};
use constant VINFO_PROJECT_TIMESTAMP => q{project-timestamp};
use constant VINFO_URL               => q{URL};

use constant SVN_NORMALIZED_URL  => q{-url};
use constant SVN_REPOSITORY_ROOT => q{Repository Root};

use constant STATE_ENABLED  => q{ENABLED};
use constant STATE_DISABLED => q{DISABLED};
use constant STATE_MIXABLED => q{MIXABLED};
use constant STATE_DEFAULT  => q{DefaultState};

use constant SOURCE_SVN      => q{svn};
use constant SOURCE_GIT      => q{git};
use constant SOURCE_HG       => q{hg};
use constant SOURCE_UNKNOWN  => q{unknown};
use constant SOURCE_DOWNLOAD => q{download};

1;
